package drg_group.wuhan_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.wuhan_2022.Base;
import drg_group.wuhan_2022.MedicalRecord;
import drg_group.wuhan_2022.ADRG.*;

public class MDCE{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"C77.100","D48.115","J45.901","J15.000x002","C34.900x008","R94.200","C78.306","R84.500","J70.101","A37.000","J45.000x003","J98.600x001","C34.100x003","D18.100x026","Q33.600","R91.x00x005","A01.000x012","A15.606","R93.805","S22.400x011","J95.804","I26.900x007","A16.800x002","D38.102","J43.903","J46.x01","J84.802","Q85.904","R09.800x095","J12.900","A15.500x004","J98.508","J45.900x012","R06.806","E85.407","J44.900x005","J63.800x001","J15.300","J44.900x003","J63.800x023","J43.904","A16.900x003","R09.801","D14.400","B40.000","S27.110","D38.201","J10.001","A15.203","D38.600x001","D38.103","J39.808","J42.x01","C34.300x004","J69.001","J86.004","R09.800x092","S22.400x031","A19.000x016","J82.x00x002","J84.109","J98.414","J63.800x010","Q32.400x005","A16.014","J45.900x041","J98.400x019","Q34.100","J84.800x004","S27.401","J85.300","J63.000x001","S27.808","J64.x00","A16.017","J63.800x024","S27.600","A16.400x005","J63.800x022","A15.000x018","J67.400","J12.100","A16.210","C78.001","J39.804","J63.802","A16.004","J98.800x018","A16.006","A15.500x014","J63.800x025","J84.805","J63.800","J63.800x021","R84.400","J66.800","J39.810","J43.001","A15.804","A15.500x024","J63.800x026","I26.900x009","J98.504","B40.100","I28.800x010","J63.800x011","Q33.100","J84.002","Q33.003","A15.500x028","C38.400","J84.804","J98.413","J10.000x001","R09.200","A19.000x018","B41.000","J20.000","J45.003","A15.813","A16.302","B44.101+J99.8*","J68.101","B37.100","T17.804","S22.300x011","J86.007","Q32.300","J90.x00x005","S27.811","J95.800x021","J68.301","J86.006","J98.507","J98.402","J18.002","S28.100","J43.200","J67.900","J62.000x001","B37.803","S27.805","Q32.402","A15.100x005","S43.200","R94.202","S27.900","A15.500x015","M35.904+J99.1*","J94.800x004","J86.008","A16.204","J09.x00","J98.201","A16.802","S27.312","J15.903","J45.007","J63.000x003","J92.000","A15.205","C34.800","J63.201","J98.800x003","J86.002","R84.600","I00.x00x007+J17.8*","S27.810","J45.100x003","N80.809","J86.015","B38.100x001+J17.2*","A15.508","J96.000","A16.101","J18.800x002","A15.900","J84.104","J63.301","J93.900","J96.900x001","A16.108","A16.500x001","A19.000x007","J67.800x003","A16.033","T17.400","I88.900x002","I26.900x015","A15.901","R84.800","S27.302","J84.100x008","R09.100","J86.003","A16.806","A19.000x019","J86.014","I26.900x017","M31.302+J99.1*","J86.016","A16.203","A15.000x014","J15.600x006","J98.800x007","J18.800x012","A19.000x001","B48.501+J17.2*","D17.700x023","B38.000x001+J17.2*","J94.800x003","J44.900x004","R94.204","J60.x00x002","D38.104","D38.601","A15.500x020","J85.000x002","S27.610","S23.200x004","J84.103","A16.037","J93.003","J98.800x016","A15.604","J90.x01","R09.000","R04.900","J45.900x023","J98.506","S29.700","A19.000x010","R06.300","T17.802","J39.807","A16.300x003","A19.000x020","A15.001","J46.x00x006","R06.802","I89.000x027","J70.001","E84.001","A19.000x006","A15.100x002","I26.901","J11.000x001","A16.010","A19.000x013","J16.800x001","A15.500x010","J40.x00","J39.805","J45.100","J62.800x007","R06.200","A16.104","R04.800x004","J96.900x003","J98.801","J40.x01","J42.x00x004","J84.110","Q32.400x004","A16.000x002","J86.000x006","M32.103+J99.1*","R09.101","J45.900x021","J46.x00x009","A15.005","J95.810","C78.002","J68.800","R05.x02","D14.302","A21.201+J17.0*","J15.800x002","J98.000x013","J94.800x010","M05.100+J99.0*","Q33.800x002","A19.801","J95.800x009","J96.900x002","J85.002","C77.104","J98.400x005","J63.800x013","S27.800x013","S27.100","A19.000x012","J63.300x002","D14.301","J62.800x004","J63.800x020","S27.300x012","C34.001","A15.803","J42.x00x001","R06.400","J45.006","A27.900x004","A19.000x008","D02.201","S22.300","B77.801+J17.3*","S27.804","A15.301","J47.x02","B69.800x008","D18.000x814","A19.000x002","J67.800x002","I88.107","J84.900","J85.100","J98.503","B67.100x001+J99.8*","J98.300","J43.900","M05.103+J99.0*","A15.500x016","C34.102","D38.100x001","I26.900x013","J98.400x012","A15.201","A15.302","B65.907+I52.1*","T81.800x012","A15.507","I89.800x007","C77.102","J94.200","A15.504","J69.800x001","A15.407","I26.900x011","B37.800x083","S27.313","A15.100x004","J98.409","A16.900x023","B49.x14+J99.8*","J39.801","A15.811","D18.000x800","D18.100x025","J67.200","J41.800","J93.100x001","T27.300","A16.401","J63.800x012","C39.800","J60.x01","M05.102+J99.0*","J62.800x003","J80.x00","J46.x00x010","A15.500x011","J20.902","J67.800x004","S22.310","J86.013","B05.802","B37.101+J17.2*","A16.001","C34.800x003","J20.100","J98.407","S27.400","A15.607","J98.200","J84.101","A16.105","I89.800x017","J82.x00x001","J86.010","J46.x00x002","S27.310","J67.300","J18.802","J44.900x002","A16.031","J63.800x017","A15.605","J18.200","R84.300","A16.403","J62.800x005","J84.803","T17.801","J67.000","J63.800x016","J90.x00x002","A43.000x001+J99.8*","J94.805","A37.900x003","A16.400x011","A15.100x010","A16.106","I26.900x001","A15.100x001","J70.200","J60.x00x004","J98.405","C34.101","J90.x00x004","J68.002","J86.012","Q33.200","J84.001","A02.201+J17.0*","B39.200","J62.804","J66.100","S27.802","A15.406","J70.300","A16.025","I26.900x016","Q28.800x007","C38.100","A16.500x009","J63.800x015","B25.000+J17.1*","J44.801","A16.304","S22.900","D38.100x003","A15.501","A16.000x001","J95.801","Q33.800x001","A16.804","A16.028","D18.100x015","J67.800x005","B45.000x002+J99.8*","C77.105","C45.701","J13.x00","A06.501+J99.8*","C34.100x004","A15.000x024","C77.100x004","J67.400x002","I89.800x016","D17.700x019","J20.500","A15.402","J41.000","M05.101+J99.0*","J98.500x008","J98.400x008","C34.902","S27.500","A15.809","A37.100","R06.000x003","B38.200","J98.800x009","A16.200x015","A15.814","J60.x00x005","J45.000x001","J15.900","I89.807","A15.503","J98.901","J62.803","A16.103","A15.405","M31.300x002","M31.304+J99.1*","A15.206","A15.703","D17.400x004","M33.201+J99.1*","J42.x00x005","J86.000x012","A16.500x004","A20.200","B38.100","J84.102","J86.903","S27.812","J15.000","Q85.901","B06.801+J17.1*","A15.806","J95.800x004","R84.700","J63.300x003","D02.200x002","S27.801","J84.800x008","A15.500x023","Q33.900","A16.019","J98.010","J43.900x001","A15.800x001","A06.500+J99.8*","A16.305","J98.101","J98.100","A16.021","Q32.102","J18.000x001","J98.000x009","J86.001","J44.000","Q27.800x033","J18.803","C38.400x003","J15.100","T17.901","J98.500x007","A15.500x012","A16.500x010","A15.807","I26.900x018","R06.100","J20.400","A16.002","J43.901","J98.416","B39.000x001+J17.2*","J85.001","A15.509","D02.100","I89.000x028","A15.701","A15.408","J12.300","R06.805","B05.200+J17.1*","R09.300","J94.801","A16.009","J63.800x005","A19.000x004","J63.800x014","A15.403","J94.807","A15.409","A16.800x003","A16.005","A19.000x009","B44.800x001","J63.500","J63.800x019","J98.404","R94.201","S27.803","T17.500","I26.900x006","A16.207","J98.400x016","M34.801+J99.1*","J39.806","J86.019","J98.602","J68.000x001","J95.808","S23.200x005","A15.702","A15.500x022","C78.000x003","A15.100x006","M34.800x001+J99.1*","J98.004","A15.104","A15.500x002","B65.902+J99.8*","J16.000","S27.210","A15.107","R06.801","R84.000","A16.018","J44.800x001","J20.800","A19.000x005","A31.000x004","A15.105","A15.810","J63.200","A15.100x008","C78.000","I89.804","A16.109","J15.400","J15.600x002","A19.000x003","J18.801","J21.900","J43.000x003","J62.801","J18.000","J70.800","R91.x00x001","S27.000","J84.800x006","A15.100x011","J86.000x013","B67.600x001","A16.504","J86.020","A16.007","C39.900x001","A15.000x012","J44.900","J98.800x001","A37.800x001","J86.011","S27.200","A16.201","A15.400x001","J15.700","J20.200","J66.200","A15.506","A16.008","Q28.801","R09.100x002","A15.100x007","A15.500x017","J09.x01","B44.800x007","J63.800x003","A16.406","I89.000x029","J86.901","A16.700x002","E89.802","B66.401+J99.8*","J86.902","A06.502+J17.3*","A16.300x002","C34.802","J63.801","J69.100x001","A37.901+J17.0*","J98.401","A16.102","S22.410","J15.800x001","E83.104+J99.8*","J62.802","J62.800x002","J68.201","C77.103","S25.401","J98.800x014","J90.x00x003","J47.x00","J93.800x001","A15.502","J67.800x001","A16.803","A19.803","J15.402","J11.100x005","D14.200","J15.901","I89.800x018","A52.704+J99.8*","J42.x00x003","J98.418","A15.805","J93.100x002","J98.601","J98.500x001","A16.301","J62.800x008","D86.200","J45.902","J45.800","A15.802","A15.608","S23.201","J45.903","J98.009","J98.411","A15.003","J45.004","J15.602","A15.404","A16.402","Q34.900","J69.000x004","J44.803","A15.303","C45.702","D38.101","J43.100","J98.502","J39.802","A15.007","T86.803","B46.000x001+J99.8*","C34.301","A06.500x002+J99.8*","B49.x13","J63.100","J86.005","R09.201","N80.802","J63.400","A16.015","T86.800x011","J15.101","A16.032","S23.203","A31.000x001","C34.900x005","J40.x00x002","A15.500x026","A16.405","C33.x00","Q33.000","J18.901","R93.801","J44.806","J98.501","B60.800x001","J90.x00","B67.904","S22.400","A16.022","B38.000","C34.900x004","S27.311","D02.300","J46.x00x003","B39.200x001+J17.2*","C34.801","A16.801","D17.400x005","T27.100x001","Q33.400","S27.010","C34.900x001","S22.400x021","J15.600x003","A16.107","A15.601","A15.100x003","D17.400x003","J84.100x006","C77.101","A15.500x025","J20.700","J95.200","B44.102+J17.2*","B40.200","B39.100x001+J17.2*","A19.000x011","T79.800x007","A15.204","R04.802","A31.001","B45.000","B58.300+J17.3*","J43.101","R06.600","J86.018","B69.801","A15.002","J98.415","J70.200x002","J67.200x002","J61.x00x001","J84.100x007","J41.100","C38.401","A15.500x029","J63.800x018","J86.000","A16.012","T79.100","J15.902","S27.501","A16.900x001","C78.200","A19.802","J45.900x031","J60.x00x003","J84.800x007","Q32.400x002","A15.100x009","Q34.000","B67.906","S28.000","A16.035","J61.x00x003","J92.900x002","A15.603","A16.024","I26.900x010","A15.500x001","J15.601","J45.100x002","J94.101","J94.804","J22.x00","J67.700x001","S27.301","A16.030","J80.x01","J98.417","A16.020","A42.000","J20.300","C34.201","J98.410","J20.900","R84.200","A15.000x020","A16.034","A22.102+J17.0*","B01.200+J17.1*","J69.000","I88.900x008","J62.000x002","J62.800x006","J45.000","E85.404","J67.600x001","J42.x00","J85.200","J94.806","A16.300x007","J09.x02","A19.000x014","A16.503","M33.103+J99.1*","J18.100","A16.900x002","C78.100","J12.800","J67.700x002","R06.800x005","C34.900x006","M30.100","T17.803","J18.900","S27.510","B38.200x001+J17.2*","Q32.200","A24.100x003","B49.x00x011","D14.300x001","J15.600x005","A15.801","R93.804","A01.000x005+J17.0*","J86.009","T17.900","B67.905","A37.900x004","J98.800x006","A15.307","B39.000","J96.100","A16.038","A15.500x018","A19.000","M35.002+J99.1*","A31.002","J98.003","A16.200x012","J82.x01","A16.501","A16.029","A15.200x002","A15.101","S27.303","B48.500+J17.2*","J84.800x005","J62.000x003","J98.008","J69.101","J67.200x003","J94.802","J68.001","J47.x03","R91.x04","J95.811","J15.200","J21.801","J45.900x002","J98.412","R06.000x002","A16.805","J10.100x005","S22.210","J12.200","Q33.500","A15.306","A15.207","Q33.301","R05.x01","B39.100","J98.000x012","A16.303","J44.805","J20.600","D17.400x002","J21.901","J84.801","J18.902","J68.000x002","A16.205","J98.102","J15.500","C34.000x002","A19.001","D38.105","C34.901","A15.006","J67.500","Q33.002","S27.710","J81.x00","I26.900x012","J45.900x013","J67.600","J98.800x004","J63.803","J98.000x011","A16.026","C78.003","A16.505","R59.009","R91.x01","B42.000+J99.8*","J63.300x001","J92.901","R06.700","A16.206","A48.100x001","A15.200x001","J45.900x001","J63.000","J94.901","A16.200x002","J18.001","R06.301","I26.902","S22.500","I89.800x002","I26.900x003","A15.609","J95.802","J95.800x016","C79.810","R06.803","A15.812","A15.000x028","I26.900x005","J69.000x002","A15.602","J86.017","A16.100x001","J98.700","J98.802","J18.800x001","D18.000x857","J45.005","J46.x00x008","S23.202","J47.x01","J63.001","Q89.800x910","I89.800x021","J46.x02","C34.800x001","C34.000x003","J70.400","J98.400x001","A15.103","J94.900x001","J82.x00x004","A15.500x003","S22.400x041","D38.100x002","A19.000x017","J18.000x002","J18.800x006","J18.903","B44.000x001+J99.8*","I89.003","J94.201","J42.x00x006","J84.000x003","A54.806+J17.0*","J44.802","R09.800x094","R06.000","C46.701","J21.100","J67.100","A15.000x001","A48.100","E85.412+J99.8*","A15.500x027","A15.305","A16.023","A15.000x002","B48.502+J17.2*","A16.202","A15.000x010","J84.800x003","J98.011","J98.403","C34.300x003","Q85.908","A15.808","J21.000","J98.505","A15.000x016","I89.000x016","R05.x00","A48.200","S27.410","I89.800x023","R09.800x093","A16.003","J21.900x002","A37.900","A16.200x013","J66.000","R09.800x091","R04.800x002","J10.000","J12.000","J63.800x009","A15.000x003","J61.x00x002","I88.106","J18.800x004","J43.000","C34.800x002","S27.910","J95.300","A31.000","J39.803","T27.200x001","J61.x01","J95.002","A15.106","J44.807","J98.002","J84.108","J63.000x002","S22.200","J81.x00x002","J68.400","J14.x00","R04.200","J98.001","D02.400","A15.102","A15.202","A16.036","R84.100","C78.304","A15.304","J98.006","R91.x03","T17.501","A16.027","Q89.209","S27.806","A15.505","C38.300","A15.300x001","J60.x00","A15.004","A15.500x019","D38.200x001","D86.000","J98.007","S27.807","S29.900","C34.000","A15.000x022","C34.803","J90.x02","J45.002","B33.000x001","A16.807","J95.401","A16.200x014","A16.700x001","J20.901","A19.000x015","A16.013","J43.800x001","A15.500x013","E84.901","Q32.401","J45.900x011","A16.011","J95.100","J98.400x013","A16.016","A16.400x010","J43.902","A15.000x026","A15.401","J82.x00x005","A16.500x008","I26.900x008","J98.005","J98.408","B66.400","J45.900","J65.x00","J84.105","S23.200x001","I26.900x002","S27.700","A16.200x007","J68.900","A15.500x021","J44.100","C45.000","J62.001","C38.200","R06.804"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCE入组条件，匹配规则：主诊断匹配");
        String result;

        result=EB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ED1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EJ1.group(record);
        if (result.length()>0){
            return result;
        }

        if (false && record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合EQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "EQY";
        }

        result=ER1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ER2.group(record);
        if (result.length()>0){
            return result;
        }

        result=ER3.group(record);
        if (result.length()>0){
            return result;
        }

        result=ES1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ES2.group(record);
        if (result.length()>0){
            return result;
        }

        result=ET1.group(record);
        if (result.length()>0){
            return result;
        }

        result=ET2.group(record);
        if (result.length()>0){
            return result;
        }

        result=EU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EV1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EW1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EX1.group(record);
        if (result.length()>0){
            return result;
        }

        result=EX2.group(record);
        if (result.length()>0){
            return result;
        }

        result=EZ1.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCE的ADRG入组条件");
        return "";
    }
}

